/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.torresquintero.oncologos.medico.controlador;

import com.torresquintero.oncologos.secretaria.controladores.AsignarConsultasController;
import com.torresquintero.oncologos.common.factory.FactoryControladorAtenderConsulta;
import com.torresquintero.oncologos.common.factory.FactoryEntityManager;
import com.torresquintero.oncologos.common.factory.LogginManager;
import com.torresquintero.oncologos.entidades.Consulta;
import com.torresquintero.oncologos.entidades.Medico;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;

/**
 *
 * @author Camilo Andres
 */
public class AgendaMedicoController {

    /**
     * Variable statica para el partron Singleton
     */
    private static AgendaMedicoController agendaController;
    /**
     * Administrador de entidades.
     */
    private EntityManager em;

    /**
     * Constructor
     */
    private AgendaMedicoController() {

        em = FactoryEntityManager.getEm();
    }

    /**
     * Metodo para obtener una instancia singleton de esta clase.
     * 
     * @return
     */
    public static AgendaMedicoController getInstance() {

        if (agendaController == null) {
            agendaController = new AgendaMedicoController();
        }
        return agendaController;
    }

    /**
     * Metodo para consultar la agenda del medico de este dia.
     * @return  lista de consultas.
     */
    public List<Consulta> consultarAgendaMedicoHoy() {

        

        return consultarAgendaMedicoDia(new Date());

    }
    
     /**
     * Metodo para consultar la agenda del medico de este dia.
     * @return  lista de consultas.
     */
    public List<Consulta> consultarAgendaMedicoDia(Date fecha) {

        /*Medico en session.*/
        
        /*Primera hora del dia*/
        Calendar fecha1 = Calendar.getInstance();
        fecha1.setTime(fecha);
        fecha1.set(Calendar.HOUR_OF_DAY, 0);
        fecha1.set(Calendar.MINUTE, 0);
        fecha1.set(Calendar.SECOND, 0);

        /*Ultima hora del dia.*/
        Calendar fecha2 = Calendar.getInstance();
        fecha2.setTime(fecha);
        fecha2.set(Calendar.HOUR_OF_DAY, 23);
        fecha2.set(Calendar.MINUTE, 59);
        fecha2.set(Calendar.SECOND, 59);

        return AsignarConsultasController.getInstance().
                buscarConsultasEntreFechasMedico(fecha1.getTime(), 
                fecha2.getTime(), getMedico());

    }
    
    /**
     * Obtiene el medico en session
     * @return 
     */
    public Medico getMedico(){
        Medico med = (Medico) LogginManager.getFuncionarioLogedIn();
        return med;
    }
    /**
     * Metodo que busca la cita a visualizar.
     * @param id 
     */
    public void elegirCita(long id){
        
        Consulta consulta=em.find(Consulta.class, id);
        FactoryControladorAtenderConsulta.setIdCita(id);
       
        
    }
    
}
